diff --git a/system/core/Controller.php b/system/core/Controller.php
index 469663f..fd9c8b5 100644
--- a/system/core/Controller.php
+++ b/system/core/Controller.php
@@ -50,7 +50,7 @@
 
 		$this->load->_base_classes =& is_loaded();
 
-		$this->load->_ci_autoloader();
+		$this->load->ci_autoloader();
 
 		log_message('debug', "Controller Class Initialized");
 
diff --git a/system/core/Loader.php b/system/core/Loader.php
index 59415b7..8146cd5 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -30,8 +30,8 @@
 
 	// All these are set automatically. Don't mess with them.
 	var $_ci_ob_level;
-	var $_ci_view_path		= '';
-	var $_ci_library_paths	= array();
+	var $_ci_view_paths		= array();
+	protected $_ci_library_paths	= array();
 	var $_ci_model_paths	= array();
 	var $_ci_helper_paths	= array();
 	var $_base_classes		= array(); // Set by the controller class
@@ -47,17 +47,15 @@
 	 * Constructor
 	 *
 	 * Sets the path to the view files and gets the initial output buffering level
-	 *
-	 * @access	public
 	 */
-	function __construct()
+	public function __construct()
 	{
-		$this->_ci_view_path = APPPATH.'views/';
 		$this->_ci_ob_level  = ob_get_level();
 		$this->_ci_library_paths = array(APPPATH, BASEPATH);
 		$this->_ci_helper_paths = array(APPPATH, BASEPATH);
 		$this->_ci_model_paths = array(APPPATH);
-
+		$this->_ci_view_paths = array(APPPATH.'views/'	=> TRUE);
+		
 		log_message('debug', "Loader Class Initialized");
 	}
 
@@ -107,13 +105,12 @@
 	 *
 	 * This function lets users load and instantiate models.
 	 *
-	 * @access	public
 	 * @param	string	the name of the class
 	 * @param	string	name for the model
 	 * @param	bool	database connection
 	 * @return	void
 	 */
-	function model($model, $name = '', $db_conn = FALSE)
+	public function model($model, $name = '', $db_conn = FALSE)
 	{
 		if (is_array($model))
 		{
@@ -200,13 +197,12 @@
 	/**
 	 * Database Loader
 	 *
-	 * @access	public
 	 * @param	string	the DB credentials
 	 * @param	bool	whether to return the DB object
 	 * @param	bool	whether to enable active record (this allows us to override the config setting)
 	 * @return	object
 	 */
-	function database($params = '', $return = FALSE, $active_record = NULL)
+	public function database($params = '', $return = FALSE, $active_record = NULL)
 	{
 		// Grab the super object
 		$CI =& get_instance();
@@ -237,10 +233,9 @@
 	/**
 	 * Load the Utilities Class
 	 *
-	 * @access	public
 	 * @return	string
 	 */
-	function dbutil()
+	public function dbutil()
 	{
 		if ( ! class_exists('CI_DB'))
 		{
@@ -265,10 +260,9 @@
 	/**
 	 * Load the Database Forge Class
 	 *
-	 * @access	public
 	 * @return	string
 	 */
-	function dbforge()
+	public function dbforge()
 	{
 		if ( ! class_exists('CI_DB'))
 		{
@@ -297,13 +291,12 @@
 	 * some cases it's advantageous to be able to return data so that
 	 * a developer can process it in some way.
 	 *
-	 * @access	public
 	 * @param	string
 	 * @param	array
 	 * @param	bool
 	 * @return	void
 	 */
-	function view($view, $vars = array(), $return = FALSE)
+	public function view($view, $vars = array(), $return = FALSE)
 	{
 		return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
 	}
@@ -315,12 +308,11 @@
 	 *
 	 * This is a generic file loader
 	 *
-	 * @access	public
 	 * @param	string
 	 * @param	bool
 	 * @return	string
 	 */
-	function file($path, $return = FALSE)
+	public function file($path, $return = FALSE)
 	{
 		return $this->_ci_load(array('_ci_path' => $path, '_ci_return' => $return));
 	}
@@ -333,11 +325,10 @@
 	 * Once variables are set they become available within
 	 * the controller class and its "view" files.
 	 *
-	 * @access	public
 	 * @param	array
 	 * @return	void
 	 */
-	function vars($vars = array(), $val = '')
+	public function vars($vars = array(), $val = '')
 	{
 		if ($val != '' AND is_string($vars))
 		{
@@ -362,11 +353,10 @@
 	 *
 	 * This function loads the specified helper file.
 	 *
-	 * @access	public
 	 * @param	mixed
 	 * @return	void
 	 */
-	function helper($helpers = array())
+	public function helper($helpers = array())
 	{
 		foreach ($this->_ci_prep_filename($helpers, '_helper') as $helper)
 		{
@@ -424,11 +414,10 @@
 	 * This is simply an alias to the above function in case the
 	 * user has written the plural form of this function.
 	 *
-	 * @access	public
 	 * @param	array
 	 * @return	void
 	 */
-	function helpers($helpers = array())
+	public function helpers($helpers = array())
 	{
 		$this->helper($helpers);
 	}
@@ -438,12 +427,11 @@
 	/**
 	 * Loads a language file
 	 *
-	 * @access	public
 	 * @param	array
 	 * @param	string
 	 * @return	void
 	 */
-	function language($file = array(), $lang = '')
+	public function language($file = array(), $lang = '')
 	{
 		$CI =& get_instance();
 
@@ -463,11 +451,10 @@
 	/**
 	 * Loads a config file
 	 *
-	 * @access	public
 	 * @param	string
 	 * @return	void
 	 */
-	function config($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
+	public function config($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
 	{
 		$CI =& get_instance();
 		$CI->config->load($file, $use_sections, $fail_gracefully);
@@ -485,7 +472,7 @@
 	 * @param	string	an optional object name
 	 * @return	void
 	 */
-	function driver($library = '', $params = NULL, $object_name = NULL)
+	public function driver($library = '', $params = NULL, $object_name = NULL)
 	{
 		if ( ! class_exists('CI_Driver_Library'))
 		{
@@ -510,18 +497,20 @@
 	 *
 	 * Prepends a parent path to the library, model, helper, and config path arrays
 	 *
-	 * @access	public
 	 * @param	string
+	 * @param 	boolean 	
 	 * @return	void
 	 */
-	function add_package_path($path)
+	public function add_package_path($path, $view_cascade=TRUE)
 	{
 		$path = rtrim($path, '/').'/';
-
+		
 		array_unshift($this->_ci_library_paths, $path);
 		array_unshift($this->_ci_model_paths, $path);
 		array_unshift($this->_ci_helper_paths, $path);
 
+		$this->_ci_view_paths = array($path.'views/' => $view_cascade) + $this->_ci_view_paths;
+
 		// Add config file path
 		$config =& $this->_ci_get_component('config');
 		array_unshift($config->_config_paths, $path);
@@ -534,11 +523,10 @@
 	 *
 	 * Return a list of all package paths, by default it will ignore BASEPATH.
 	 *
-	 * @access	public
 	 * @param	string
 	 * @return	void
 	 */
-	function get_package_paths($include_base = FALSE)
+	public function get_package_paths($include_base = FALSE)
 	{
 		return $include_base === TRUE ? $this->_ci_library_paths : $this->_ci_model_paths;
 	}
@@ -551,11 +539,10 @@
 	 * Remove a path from the library, model, and helper path arrays if it exists
 	 * If no path is provided, the most recently added path is removed.
 	 *
-	 * @access	public
 	 * @param	type
 	 * @return	type
 	 */
-	function remove_package_path($path = '', $remove_config_path = TRUE)
+	public function remove_package_path($path = '', $remove_config_path = TRUE)
 	{
 		$config =& $this->_ci_get_component('config');
 
@@ -564,12 +551,12 @@
 			$void = array_shift($this->_ci_library_paths);
 			$void = array_shift($this->_ci_model_paths);
 			$void = array_shift($this->_ci_helper_paths);
+			$void = array_shift($this->_ci_view_paths);
 			$void = array_shift($config->_config_paths);
 		}
 		else
 		{
 			$path = rtrim($path, '/').'/';
-
 			foreach (array('_ci_library_paths', '_ci_model_paths', '_ci_helper_paths') as $var)
 			{
 				if (($key = array_search($path, $this->{$var})) !== FALSE)
@@ -577,6 +564,11 @@
 					unset($this->{$var}[$key]);
 				}
 			}
+			
+			if (isset($this->_ci_view_paths[$path.'views/']))
+			{
+				unset($this->_ci_view_paths[$path.'views/']);
+			}
 
 			if (($key = array_search($path, $config->_config_paths)) !== FALSE)
 			{
@@ -588,6 +580,7 @@
 		$this->_ci_library_paths = array_unique(array_merge($this->_ci_library_paths, array(APPPATH, BASEPATH)));
 		$this->_ci_helper_paths = array_unique(array_merge($this->_ci_helper_paths, array(APPPATH, BASEPATH)));
 		$this->_ci_model_paths = array_unique(array_merge($this->_ci_model_paths, array(APPPATH)));
+		$this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH.'views/' => TRUE));
 		$config->_config_paths = array_unique(array_merge($config->_config_paths, array(APPPATH)));
 	}
 
@@ -600,24 +593,39 @@
 	 * Variables are prefixed with _ci_ to avoid symbol collision with
 	 * variables made available to view files
 	 *
-	 * @access	private
 	 * @param	array
 	 * @return	void
 	 */
-	function _ci_load($_ci_data)
+	protected function _ci_load($_ci_data)
 	{
 		// Set the default data variables
 		foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val)
 		{
 			$$_ci_val = ( ! isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val];
 		}
+		
+		$file_exists = FALSE;
 
 		// Set the path to the requested file
 		if ($_ci_path == '')
 		{
 			$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);
 			$_ci_file = ($_ci_ext == '') ? $_ci_view.'.php' : $_ci_view;
-			$_ci_path = $this->_ci_view_path.$_ci_file;
+
+			foreach ($this->_ci_view_paths as $view_file => $cascade)
+			{
+				if (file_exists($view_file.$_ci_file))
+				{
+					$_ci_path = $view_file.$_ci_file;
+					$file_exists = TRUE;
+					break;
+				}
+				
+				if ( ! $cascade)
+				{
+					break;
+				}				
+			}
 		}
 		else
 		{
@@ -625,7 +633,7 @@
 			$_ci_file = end($_ci_x);
 		}
 
-		if ( ! file_exists($_ci_path))
+		if ( ! $file_exists && ! file_exists($_ci_path))
 		{
 			show_error('Unable to load the requested file: '.$_ci_file);
 		}
@@ -721,13 +729,12 @@
 	 *
 	 * This function loads the requested class.
 	 *
-	 * @access	private
 	 * @param	string	the item that is being loaded
 	 * @param	mixed	any additional parameters
 	 * @param	string	an optional object name
 	 * @return	void
 	 */
-	function _ci_load_class($class, $params = NULL, $object_name = NULL)
+	protected function _ci_load_class($class, $params = NULL, $object_name = NULL)
 	{
 		// Get the class name, and while we're at it trim any slashes.
 		// The directory path can be included as part of the class name,
@@ -959,11 +966,13 @@
 	 * The config/autoload.php file contains an array that permits sub-systems,
 	 * libraries, and helpers to be loaded automatically.
 	 *
-	 * @access	private
+	 * This function is public, as it's used in the CI_Controller class.  
+	 * However, there is no reason you should ever needs to use it.
+	 *
 	 * @param	array
 	 * @return	void
 	 */
-	function _ci_autoloader()
+	public function ci_autoloader()
 	{
 		if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/autoload.php'))
 		{
@@ -1046,11 +1055,10 @@
 	 *
 	 * Takes an object as input and converts the class variables to array key/vals
 	 *
-	 * @access	private
 	 * @param	object
 	 * @return	array
 	 */
-	function _ci_object_to_array($object)
+	protected function _ci_object_to_array($object)
 	{
 		return (is_object($object)) ? get_object_vars($object) : $object;
 	}
@@ -1060,10 +1068,9 @@
 	/**
 	 * Get a reference to a specific library or model
 	 *
-	 * @access	private
 	 * @return	bool
 	 */
-	function &_ci_get_component($component)
+	protected function &_ci_get_component($component)
 	{
 		$CI =& get_instance();
 		return $CI->$component;
@@ -1076,11 +1083,10 @@
 	 *
 	 * This function preps the name of various items to make loading them more reliable.
 	 *
-	 * @access	private
 	 * @param	mixed
 	 * @return	array
 	 */
-	function _ci_prep_filename($filename, $extension)
+	protected function _ci_prep_filename($filename, $extension)
 	{
 		if ( ! is_array($filename))
 		{
